From 8fdf47ea5b5631bdc97d9a73aca4ab991fe0cf70 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 23 Jan 2018 17:03:02 +0100 Subject: [PATCH] keyboard: Do not create widgetry for all keyboard groups at once Instead do this on demand based on the current group. It is less taxing at the time of initially creating the Keyboard object. --- js/ui/keyboard.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js index 8fe392f0a..605af3b56 100644 --- a/js/ui/keyboard.js +++ b/js/ui/keyboard.js @@ -680,7 +680,8 @@ var Keyboard = new Lang.Class({ { x_align: St.Align.MIDDLE, x_fill: false }); - this._addKeys(); + this._ensureKeysForGroup(this._keyboardController.getCurrentGroup()); + this._setActiveLayer(0); // Keyboard models are defined in LTR, we must override // the locale setting in order to avoid flipping the @@ -744,14 +745,9 @@ var Keyboard = new Lang.Class({ return layers; }, - _addKeys: function () { - let groups = this._keyboardController.getGroups(); - for (let i = 0; i < groups.length; ++i) { - let gname = groups[i]; - this._groups[gname] = this._createLayersForGroup(gname); - } - - this._setActiveLayer(0); + _ensureKeysForGroup: function(group) { + if (!this._groups[group]) + this._groups[group] = this._createLayersForGroup(group); }, _addRowKeys : function (keys, layout) { @@ -911,6 +907,7 @@ var Keyboard = new Lang.Class({ }, _onGroupChanged: function () { + this._ensureKeysForGroup(this._keyboardController.getCurrentGroup()); this._setActiveLayer(0); }, -- 2.39.5